/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package chatroom.com.util;

import java.util.regex.Pattern;

public class StringUtil {

    /**
     * 功能：将字符数组，返回成字符串
     *
     * @param chars
     * @return
     */
    public static String turnCharsToString(char[] chars) {
        StringBuffer strBuf = new StringBuffer();
        for (int i = 0; i < chars.length; i++) {
            strBuf.append(chars[i]);
        }
        return strBuf.toString().trim();
    }
      /** Email正则表达式禁用字符 */

     private static final String PATTERN_EMAIL_CODE = "[^///^(),:;<>//[//]]";

    /** 

     * 判断Email格式是否正确

      *

      * @param 判断的Email

      * @return

      */

      public static boolean isEmail(String str) { 

        //System.out.println(PATTERN_EMAIL_CODE);

         //判断E-mail的总长度是否超过64

         if (str.length() > 64) 

            return false;

         //检查是否有@符号

         int findex = str.indexOf("@");

         if (findex == -1) 

            return false; 

        //检查是否有多个 @ 符号

         if (findex != str.lastIndexOf("@")) 

            return false; 

        //检查 @ 符号之前的字符

         String tmp = str.substring(0, findex);

         //System.out.println(tmp); 

        if (!emailUseCode(tmp)) 

            return false; 

        //检查 @ 符号之后的字符

         tmp = str.substring(findex + 1, str.length()); 

        System.out.println(tmp);

         return emailPostfix(tmp); 

    }

    /**

      * 判断字符是否是Email使用的字符(除@符号) 

     *  

    * @param Email(除@符号) 

     * @return

      */ 

    private static boolean emailUseCode(String str) { 

        return Pattern.matches(PATTERN_EMAIL_CODE + "{" + str.length() + "}", str);

     }

    /** 

     * 检查Email后缀格式

      *  

    * @param 后缀字符串

      * @return 

     */ 

    private static boolean emailPostfix(String str) {

         // 判断是否使用规定字符

         if (!emailUseCode(str))

             return false;

         // 获取第一次出现"."位置，

         int findex = str.indexOf("."); 

        // 判断"."是否存在和是否在第1位置。排除这类Email: ABC@.com或ABC@com

         if (findex == -1 || findex == 0)

             return false; 

        // 判断最后一次出现"."位置是否在字符串末尾,排除这类Email: ABC@com.  

       if (str.lastIndexOf(".") == str.length() - 1)  

           return false; 

        // 转换为char数组 

        char[] tmp = str.toCharArray();  

       // 判断是否出现有两个"."连续出现，排除这类Email: ABC@abc..com 或 ABC@abc...com 

        for (int i = 0; i < tmp.length - 1; i++) {

             if (tmp[i] == tmp[i + 1]) 

                return false;

         }

         return true;

     }


}
